{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "3c017f3c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\明日方舟干员档案（完整素材）.xlsx\n",
      "E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\素材1：标准素材.xlsx\n",
      "E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\素材2：存在空行.xlsx\n",
      "E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\素材3：缺少列.xlsx\n",
      "E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\素材4：缺失列信息.xlsx\n",
      "E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\素材5：空白列.xlsx\n",
      "E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\素材6：缺少行信息.xlsx\n",
      "E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\素材7：XLS.xls\n"
     ]
    }
   ],
   "source": [
    "from Controller import *\n",
    "import pandas\n",
    "\n",
    "excellist = Excel_FileList()\n",
    "excellist.printlist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c8c447f4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "正在读取文件:E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\素材6：缺少行信息.xlsx\n",
      "工作表名称:明日方舟干员列表\n",
      "正在读取文件:E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL素材库\\素材1：标准素材.xlsx\n",
      "工作表名称:明日方舟干员列表\n",
      "新建空白EXCEL文件对象\n",
      "正在读取文件:E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL表格.xlsx\n",
      "新建空EXCEL表单，地址为: E:\\_电子设计与工程训练\\2_Python工程\\excel-processing-assistant\\EXCEL表格.xlsx\n"
     ]
    }
   ],
   "source": [
    "ef1 = Excelfile(excellist.list[6])\n",
    "ef2 = Excelfile(excellist.list[1])\n",
    "ef3 = Excelfile()\n",
    "ef3.createexcel(df = ef1.df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "be670166",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>编号</th>\n",
       "      <th>代号</th>\n",
       "      <th>性别</th>\n",
       "      <th>职业</th>\n",
       "      <th>稀有度</th>\n",
       "      <th>分支</th>\n",
       "      <th>特性</th>\n",
       "      <th>出身地</th>\n",
       "      <th>种族</th>\n",
       "      <th>身高</th>\n",
       "      <th>矿石病感染情况</th>\n",
       "      <th>源石技艺适应性</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>W</td>\n",
       "      <td>女</td>\n",
       "      <td>狙击</td>\n",
       "      <td>6</td>\n",
       "      <td>炮手</td>\n",
       "      <td>输出控场</td>\n",
       "      <td>卡兹戴尔</td>\n",
       "      <td>萨卡兹</td>\n",
       "      <td>165cm</td>\n",
       "      <td>参照医学检测报告，确认为感染者。</td>\n",
       "      <td>标准</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>阿</td>\n",
       "      <td>男</td>\n",
       "      <td>特种</td>\n",
       "      <td>6</td>\n",
       "      <td>怪杰</td>\n",
       "      <td>支援输出</td>\n",
       "      <td>龙门</td>\n",
       "      <td>菲林</td>\n",
       "      <td>161cm</td>\n",
       "      <td>参照医学检测报告，确认为非感染者。</td>\n",
       "      <td>标准</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>艾丽妮</td>\n",
       "      <td>女</td>\n",
       "      <td>近卫</td>\n",
       "      <td>6</td>\n",
       "      <td>剑豪</td>\n",
       "      <td>爆发输出控场</td>\n",
       "      <td>伊比利亚</td>\n",
       "      <td>黎博利</td>\n",
       "      <td>156cm</td>\n",
       "      <td>参照医学检测报告，确认为非感染者。</td>\n",
       "      <td>标准</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>艾雅法拉</td>\n",
       "      <td>女</td>\n",
       "      <td>术师</td>\n",
       "      <td>6</td>\n",
       "      <td>中坚术师</td>\n",
       "      <td>输出削弱</td>\n",
       "      <td>莱塔尼亚</td>\n",
       "      <td>卡普里尼</td>\n",
       "      <td>145cm</td>\n",
       "      <td>体表有源石结晶分布，参照医学检测报告，确认为感染者。</td>\n",
       "      <td>卓越</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>安洁莉娜</td>\n",
       "      <td>女</td>\n",
       "      <td>辅助</td>\n",
       "      <td>6</td>\n",
       "      <td>凝滞师</td>\n",
       "      <td>减速输出支援</td>\n",
       "      <td>叙拉古</td>\n",
       "      <td>沃尔珀</td>\n",
       "      <td>162cm</td>\n",
       "      <td>体表有源石结晶分布，确认为感染者。</td>\n",
       "      <td>优良</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>226</th>\n",
       "      <td>253</td>\n",
       "      <td>12F</td>\n",
       "      <td>男</td>\n",
       "      <td>术师</td>\n",
       "      <td>2</td>\n",
       "      <td>扩散术师</td>\n",
       "      <td>新手</td>\n",
       "      <td>不明</td>\n",
       "      <td>萨弗拉</td>\n",
       "      <td>181cm</td>\n",
       "      <td>参照医学检测报告，确认为非感染者。</td>\n",
       "      <td>标准</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>227</th>\n",
       "      <td>254</td>\n",
       "      <td>杜林</td>\n",
       "      <td>女</td>\n",
       "      <td>术师</td>\n",
       "      <td>2</td>\n",
       "      <td>中坚术师</td>\n",
       "      <td>新手</td>\n",
       "      <td>未公开</td>\n",
       "      <td>杜林</td>\n",
       "      <td>131cm</td>\n",
       "      <td>参照医学检测报告，确认为非感染者。</td>\n",
       "      <td>优良</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>228</th>\n",
       "      <td>255</td>\n",
       "      <td>黑角</td>\n",
       "      <td>男</td>\n",
       "      <td>重装</td>\n",
       "      <td>2</td>\n",
       "      <td>铁卫</td>\n",
       "      <td>新手</td>\n",
       "      <td>东国</td>\n",
       "      <td>鬼</td>\n",
       "      <td>180cm</td>\n",
       "      <td>参照医学检测报告，确认为感染者。</td>\n",
       "      <td>标准</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>229</th>\n",
       "      <td>256</td>\n",
       "      <td>巡林者</td>\n",
       "      <td>男</td>\n",
       "      <td>狙击</td>\n",
       "      <td>2</td>\n",
       "      <td>速射手</td>\n",
       "      <td>新手</td>\n",
       "      <td>未公开</td>\n",
       "      <td>萨弗拉</td>\n",
       "      <td>179cm</td>\n",
       "      <td>参照医学检测报告，确认为非感染者。</td>\n",
       "      <td>普通</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>230</th>\n",
       "      <td>257</td>\n",
       "      <td>夜刀</td>\n",
       "      <td>女</td>\n",
       "      <td>先锋</td>\n",
       "      <td>2</td>\n",
       "      <td>尖兵</td>\n",
       "      <td>新手</td>\n",
       "      <td>东国</td>\n",
       "      <td>鬼</td>\n",
       "      <td>161cm</td>\n",
       "      <td>参照医学检测报告，确认为感染者。</td>\n",
       "      <td>标准</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>231 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      编号    代号 性别  职业  稀有度    分支      特性   出身地    种族     身高  \\\n",
       "0      1     W  女  狙击    6    炮手    输出控场  卡兹戴尔   萨卡兹  165cm   \n",
       "1      2     阿  男  特种    6    怪杰    支援输出    龙门    菲林  161cm   \n",
       "2      3   艾丽妮  女  近卫    6    剑豪  爆发输出控场  伊比利亚   黎博利  156cm   \n",
       "3      4  艾雅法拉  女  术师    6  中坚术师    输出削弱  莱塔尼亚  卡普里尼  145cm   \n",
       "4      5  安洁莉娜  女  辅助    6   凝滞师  减速输出支援   叙拉古   沃尔珀  162cm   \n",
       "..   ...   ... ..  ..  ...   ...     ...   ...   ...    ...   \n",
       "226  253   12F  男  术师    2  扩散术师      新手    不明   萨弗拉  181cm   \n",
       "227  254    杜林  女  术师    2  中坚术师      新手   未公开    杜林  131cm   \n",
       "228  255    黑角  男  重装    2    铁卫      新手    东国     鬼  180cm   \n",
       "229  256   巡林者  男  狙击    2   速射手      新手   未公开   萨弗拉  179cm   \n",
       "230  257    夜刀  女  先锋    2    尖兵      新手    东国     鬼  161cm   \n",
       "\n",
       "                        矿石病感染情况 源石技艺适应性  \n",
       "0              参照医学检测报告，确认为感染者。      标准  \n",
       "1             参照医学检测报告，确认为非感染者。      标准  \n",
       "2             参照医学检测报告，确认为非感染者。      标准  \n",
       "3    体表有源石结晶分布，参照医学检测报告，确认为感染者。      卓越  \n",
       "4             体表有源石结晶分布，确认为感染者。      优良  \n",
       "..                          ...     ...  \n",
       "226           参照医学检测报告，确认为非感染者。      标准  \n",
       "227           参照医学检测报告，确认为非感染者。      优良  \n",
       "228            参照医学检测报告，确认为感染者。      标准  \n",
       "229           参照医学检测报告，确认为非感染者。      普通  \n",
       "230            参照医学检测报告，确认为感染者。      标准  \n",
       "\n",
       "[231 rows x 12 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ef3.df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "c377080a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def compareexcel(excel1,excel2,cindex):\n",
    "    df = pandas.DataFrame(columns = excel2.cindex)\n",
    "    if cindex in excel1.cindex and cindex in excel2.cindex:\n",
    "        series = excel1.df[cindex].values.tolist()\n",
    "        for i in excel2.df.index:\n",
    "            if excel2.df[cindex][i] not in series:\n",
    "                df.loc[i] = excel2.df.loc[i]\n",
    "        df.dropna(how = 'all', axis = 'index')\n",
    "        df.reset_index(drop=True)\n",
    "        \n",
    "        print(df)\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "bf3d8cb6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    编号   代号 性别  职业 稀有度    分支      特性   出身地       种族      身高  \\\n",
      "66  67   早露  女  狙击   6   攻城手    输出控场   乌萨斯      乌萨斯   174cm   \n",
      "67  68  阿米娅  女  术师   5  中坚术师      输出  雷姆必拓  卡特斯/奇美拉   142cm   \n",
      "68  69  埃拉托  女  狙击   5   攻城手    输出控场   米诺斯      黎博利   158cm   \n",
      "69  70  爱丽丝  女  术师   5   秘术师      输出  维多利亚       菲林   147cm   \n",
      "70  71  安哲拉  女  狙击   5   神射手    输出减速  伊比利亚      阿戈尔   166cm   \n",
      "71  72  奥斯塔  男  狙击   5   散射手      群攻   叙拉古       鲁珀   177cm   \n",
      "72  73   白金  女  狙击   5   速射手      输出  卡西米尔      库兰塔   160cm   \n",
      "73  74  白面鸮  女  医疗   5   群愈师    治疗支援  哥伦比亚      黎博利   164cm   \n",
      "74  75   柏喙  女  近卫   5    剑豪    爆发输出    萨米      黎博利   161cm   \n",
      "75  76   拜松  男  重装   5    铁卫      防护    龙门       丰蹄   163cm   \n",
      "76  77   薄绿  女  术师   5  阵法术师    群攻控场  维多利亚       菲林   155cm   \n",
      "77  78   暴行  女  近卫   5   强攻手    群攻爆发  雷姆必拓      卡特斯   160cm   \n",
      "78  79   暴雨  女  重装   5    铁卫    防护支援   萨尔贡      库兰塔   159cm   \n",
      "79  80   贝娜  女  特种   5   傀儡师  输出快速复活  维多利亚     卡普里尼   143cm   \n",
      "80  81   鞭刃  女  近卫   5    教官    输出支援  卡西米尔      库兰塔   165cm   \n",
      "81  82  布洛卡  男  近卫   5   强攻手    群攻生存   叙拉古       菲林   189cm   \n",
      "82  83  车尔尼  男  重装   5  驭法铁卫    防护输出  莱塔尼亚     埃拉菲亚   182cm   \n",
      "83  84   赤冬  女  近卫   5    武者    生存输出    东国      阿戈尔  176 cm   \n",
      "84  85   初雪  女  辅助   5   削弱者      削弱   谢拉格       菲林   161cm   \n",
      "85  86  达格达  女  近卫   5    斗士    输出生存  维多利亚       菲林   155cm   \n",
      "86  87   但书  女  辅助   5   凝滞师    削弱减速  卡西米尔      库兰塔   165cm   \n",
      "88  89   断崖  男  近卫   5    领主    输出群攻  雷姆必拓      卡特斯   173cm   \n",
      "89  90   风丸  女  特种   5   傀儡师  输出快速复活    东国       菲林   157cm   \n",
      "90  91  芙兰卡  女  近卫   5   无畏者    输出生存  哥伦比亚      沃尔珀   163cm   \n",
      "\n",
      "                       矿石病感染情况 源石技艺适应性  \n",
      "66           参照医学检测报告，确认为非感染者。      标准  \n",
      "67  体表有源石结晶分布，参照医学检测报告，确认为感染者。      ■■  \n",
      "68           参照医学检测报告，确认为非感染者。      优良  \n",
      "69           参照医学检测报告，确认为非感染者。      优良  \n",
      "70           参照医学检测报告，确认为非感染者。      缺陷  \n",
      "71  体表有源石结晶分布，参照医学检测报告，确认为感染者。      标准  \n",
      "72           参照医学检测报告，确认为非感染者。      标准  \n",
      "73       体内脏器有可见源石结晶阴影，确认为感染者。      优良  \n",
      "74  体表有源石结晶分布，参照医学检测报告，确认为感染者。      普通  \n",
      "75           参照医学检测报告，确认为非感染者。      标准  \n",
      "76  体表有源石结晶分布，参照医学检测报告，确认为感染者。      优良  \n",
      "77           参照医学检测报告，确认为非感染者。      标准  \n",
      "78           参照医学检测报告，确认为非感染者。      普通  \n",
      "79           参照医学检测报告，确认为非感染者。      优良  \n",
      "80           参照医学检测报告，确认为非感染者。      标准  \n",
      "81  体表有源石结晶分布，参照医学检测报告，确认为感染者。      标准  \n",
      "82  体表有源石结晶分布，参照医学检测报告，确认为感染者。      优良  \n",
      "83           参照医学检测报告，确认为非感染者。      普通  \n",
      "84           参照医学检测报告，确认为非感染者。      卓越  \n",
      "85           参照医学检测报告，确认为非感染者。      标准  \n",
      "86           参照医学检测报告，确认为非感染者。      普通  \n",
      "88           参照医学检测报告，确认为非感染者。      标准  \n",
      "89           参照医学检测报告，确认为非感染者。      标准  \n",
      "90  体表有源石结晶分布，参照医学检测报告，确认为感染者。      优良  \n"
     ]
    }
   ],
   "source": [
    "compareexcel(ef3,ef2,'代号')\n",
    "# ef3.df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "83ebb9b9",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
